The domain name system (DNS) is an integral part of the Internet and other networks that use Internet-type protocols and architectures, such as transmission control protocol internet protocol (TCP/IP). The primary function of the domain name system is to permit users to access information on different computers connected to the Internet by simply typing or selecting text names, without regard to the sequence of numbers that specify the actual machine addresses or the name servers where the information to be accessed is located.
Thus, DNS is responsible for mapping an ASCII hostname, such as www.research.att.com to an IP address, such as 192.20.225.10. In some cases, different IP addresses are returned in response to different queries, which may be a function of information, such as load and network location. In addition, a single response can provide multiple IP addresses.
The entire database that is accessible over the Internet is divided into zones, which are distributed among name servers. The essential task of a name server is to answer queries using data in its zone. The reliability of the system and the information contained therein is of paramount importance. Consequently, and in order to ensure continued reliability, the DNS requires that at least two name servers within a zone contain data derived from an authoritative server, i.e., authoritative data. The two name servers may be denominated primary and secondary servers, or, as referred to herein, higher level DNS servers and lower level DNS servers. One of the chief responsibilities of name servers is to load the database files and maintain cached data acquired through resource records. Each resource record contains a so-called “time-to-live” field, which ensures that name servers do not cache data without a time bound.
The DNS is a hierarchical service, in which one DNS server can obtain information from another and then reuse that information repeatedly until a time-based threshold is reached. The time-based threshold is referred to as “time-to-live” or TTL. Normally, a local DNS server acts on behalf of clients by requesting DNS records, caching them, and then serving them to other clients for a period of time, known as the TTL, without revalidating the information. When an Internet user makes a request for a domain name record or information from a DNS server within the DNS, the DNS server must obtain the requested information or record and send it to the requesting party.
One method of accomplishing this task is for the server to check its cache memory for a local list of domain names already matched to machine addresses. If the requested domain name is in cache, then the computer can respond with an answer in the form of the associated machine address within a very short period of time. Such a local list is referred to as a name cache. It is generally stored in random access memory, disk storage, or another storage device coupled to the name server computer. The name cache is updated periodically from other name servers in the Internet.
When a DNS server caches the data, it builds up a database with relevant information that may be useful the next time the same or a similar query is received. Essentially, once the information is cached, the name server acquires significant knowledge about the data and whether it is responsive to a particular query or class of queries. Thus, once the information is cached, the process of obtaining the data is shortened significantly because the server now has the answer to the query in its cache. This leads to greater efficiency and enhanced performance, insofar as the cached information can be used for future inquiries. The resolution of data that is already in the local cache is considerably more efficient than a remote resolution that requires maneuvering through network traffic. However, there is a tradeoff. There is a very real possibility that the cached information may become outdated by the time it is used.
The local DNS server may serve a small number of clients, or an enormous community. Until the TTL expires, the local DNS will continue to use and distribute the same information. On the one hand, with a short TTL, the information will be fairly current, even with many clients using the specified host, because a new host can be selected before the load peaks too dramatically.
However, revalidating the information and establishing a new TTL requires that queries be sent to the authoritative server linked to the local DNS server. Thus, while the information will be current, some of these clients must wait for a round-trip between the local DNS and the authoritative DNS. On the other hand, with a longer TTL, the DNS lookup is amortized over more lookups, and fewer clients must wait, but the server may become overloaded before a new host is used.
Originally, DNS was intended to be static, that is, a hostname-to-IP address assignment would rarely change and would certainly not be different for different hosts requesting the same information. With the advent of DNS being used for geographic load balancing, DNS is much more dynamic, but there is still a balance to be drawn between assigning a low TTL to ensure that too many hosts do not use the information before revalidating, and assigning a higher TTL to limit the delay in repeatedly obtaining the same DNS information.
As discussed above, DNS is a hierarchical service, in which one DNS server can obtain information from another and then reuse that information until the TTL has expired. There is currently no control over whether the DNS server reuses this information to serve a small number of requests or a large number of requests. This results in what could be called a “hidden load” that can only be estimated using prior knowledge concerning a particular DNS server. For instance, a server associated with a high rate of usage would, if possible, be assigned a shorter TTL and/or directed to a host with greater capacity than a server having a more moderate rate of usage. In view of the foregoing considerations, a method and system are called for to address this hidden load problem.